/*
 * FILE								: spi_simulate.h
 * DESCRIPTION				: 
 * Author							: ysloveivy.
 * Copyright					:
 *
 * History
 * --------------------
 * Rev								: 0.00
 * Date								: 05/07/2015
 *
 * create.
 * --------------------
 */

#ifndef __spi_simulate_h__
#define __spi_simulate_h__

//------------------------inclufe-------------------------//


//-----------------Define--------------------------------//

#define SPI_CS_OUTPUT      		GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_8;\
		GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_OUT;\
		GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;\
		GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;\
		GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
		GPIO_Init(GPIOD,&GPIO_uInitStructure)
		
#define SPI_CS_ON         		GPIO_SetBits(GPIOD,GPIO_Pin_8)
#define SPI_CS_OFF         		GPIO_ResetBits(GPIOD,GPIO_Pin_8)

#define SPI_CLK_OUTPUT      		GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_9;\
		GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_OUT;\
		GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;\
		GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;\
		GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
		GPIO_Init(GPIOD,&GPIO_uInitStructure)
		
#define SPI_CLK_ON          GPIO_SetBits(GPIOD,GPIO_Pin_9)
#define SPI_CLK_OFF         GPIO_ResetBits(GPIOD,GPIO_Pin_9)

#define SPI_MOSI_OUTPUT      		GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_10;\
		GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_OUT;\
		GPIO_uInitStructure.GPIO_OType = GPIO_OType_PP;\
		GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;\
		GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
		GPIO_Init(GPIOD,&GPIO_uInitStructure)
		
#define SPI_M0SI_ON          GPIO_SetBits(GPIOD,GPIO_Pin_10)
#define SPI_MOSI_OFF         GPIO_ResetBits(GPIOD,GPIO_Pin_10)

#define SPI_MISO_INPUT       	GPIO_uInitStructure.GPIO_Pin = GPIO_Pin_11;\
		GPIO_uInitStructure.GPIO_Mode = GPIO_Mode_IN;\
		GPIO_uInitStructure.GPIO_Speed = GPIO_Speed_100MHz;\
		GPIO_uInitStructure.GPIO_PuPd = GPIO_PuPd_UP;\
		GPIO_Init(GPIOD, &GPIO_uInitStructure)
	
#define SPI_MISO_DATA        GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_11)
//----------------- Typedef------------------------------//

typedef  struct{
	int (* initialize)(void);
   char (* write_byte)( char dat);
	int (* write_nbyte)(int, char *);
}SPI_SIMULATE_T;

//----------------- Extern ------------------------------//

extern SPI_SIMULATE_T spi;

#endif 
